'''
会员服务类,将一个服务封装成一个类
服务名MemberService 类名 member_service
方法1:find_by_telephone
方法2:find_member_count_by_months
方法3:add
'''
import json

from api.base_service import BaseService


class MemberService(BaseService):

    def __init__(self):
        # 重写:子类中实现了父类的同名方法,我们现在就重写了init方法
        # 覆盖式:子类重写了父类方法,调用时,只调用了子类的同名方法-->丢弃了父类的实现
        # 扩展式重写,子类重写父类方法,需要在核实的位置调用父类方法,然后再进行代码的扩展-->即实现了父类的,也增加了自己的
        super().__init__() # 使用super调用了父类同名方法
        self.service_name = "MemberService"
    # 根据手机号查询会员信息 Member findByTelephone(String telephone)
    def find_by_telephone(self,tel):
        resp = self.client.invoke(self.service_name, "findByTelephone",tel)
        # 虽然接口文档写的是自定义的对象,但实际上接收的时候,是一个按照字典格式组织的字符串
        # 成功:返回的是字典格式的字符串:"{"id":xx,"name":"xx","phoneNumber":"xx"}"
        # 失败:"null" 手机号找不到 "12345678"
        # 失败:"Failed" 数据类型不对 14020210001

        # 如果响应数据是null或者Failed,就让接口返回None-->调用接口时获得的是None,我们就只扫接口值调用失败了
        # 如果响应数据不是None-->将响应数据转换成json格式的数据进行断言
        if resp == "Failed" or resp == "null":
            return None
        else:
            return json.loads(resp) #load 是将文件对象转换为python对象,loads是将字符串转换为python对象
    # 根据日期统计会员数 Definition： List < Integer > findMemberCountByMonths(List < String > months)
    def find_member_count_by_months(self,data_list):
        resp = self.client.invoke(self.service_name, "findMemberCountByMonths", data_list)
        if resp == "Failed" or resp == "No":
            return None
        else:
            return json.loads(resp)
    #添加会员 Definition： void add(Member member)
    def add(self,member_dict):
        # member是一个自定义类型.需要我们使用字典来传递,并增加class字段信息
        # 为了方便传参.将class字段封装到方法里即可
        member_dict["class"] = "com.itheima.pojo.Member"
        resp = self.client.invoke(self.service_name, "add", member_dict)
        if resp == "null":
            return True
        else:
            return False
if __name__ == '__main__':
    # 根据手机号查询会员信息
    tel = "14020210001"
    res = MemberService().find_by_telephone(tel)
    print(type(res),res)

    # 根据日期统计会员数
    data_list = ["2022.8", "2022.10"]
    res = MemberService().find_member_count_by_months(data_list)
    print(type(res),res)

    # 添加会员
    member_dict = {"name": "小才", "phoneNumber": "15138458853 "}
    res = MemberService().add(member_dict)
    print(type(res),res)